package co.edu.usbcali.rebio.presentation.backEndBeans;


import co.edu.usbcali.rebio.exceptions.*;
import co.edu.usbcali.rebio.modelo.*;
import co.edu.usbcali.rebio.modelo.dto.RebClienteDTO;
import co.edu.usbcali.rebio.presentation.businessDelegate.BusinessDelegatorView;
import co.edu.usbcali.rebio.utilities.*;

import com.icesoft.faces.async.render.RenderManager;
import com.icesoft.faces.async.render.Renderable;
import com.icesoft.faces.component.ext.HtmlCommandButton;
import com.icesoft.faces.component.ext.HtmlDataTable;
import com.icesoft.faces.component.ext.HtmlInputText;
import com.icesoft.faces.component.ext.HtmlOutputText;
import com.icesoft.faces.component.ext.HtmlSelectOneMenu;
import com.icesoft.faces.context.DisposableBean;
import com.icesoft.faces.webapp.xmlhttp.FatalRenderingException;
import com.icesoft.faces.webapp.xmlhttp.PersistentFacesState;
import com.icesoft.faces.webapp.xmlhttp.RenderingException;
import com.icesoft.faces.webapp.xmlhttp.TransientRenderingException;


import java.util.ArrayList;
import java.util.List;
import java.util.TimeZone;

import javax.faces.event.ValueChangeEvent;
import javax.faces.model.DataModel;
import javax.faces.model.SelectItem;


/**
*
*
* @author Zathura Code Generator http://code.google.com/p/zathura
*
*/
public class RebClienteView extends DataSource implements Renderable,
    DisposableBean {
    private HtmlInputText txtCliApellido = new HtmlInputText();
    private HtmlInputText txtCliContacto1;
    private HtmlInputText txtCliContacto2;
    private HtmlInputText txtCliDireccion;
    private HtmlInputText txtCliEmail;
    private HtmlInputText txtCliEstado;
    private HtmlInputText txtCliNit;
    private HtmlOutputText txtCliCodigo;
    private HtmlInputText txtCliNombre;
    private HtmlInputText txtCliTelefonocontacto1;
    private HtmlInputText txtCliTelefonocontacto2;
    private HtmlInputText txtCliTelefonooficina;
    private HtmlInputText txtMunCodigo_RebMunicipio;
    private HtmlInputText txtNombreMunicipio;
    private HtmlInputText txtTclCodigo_RebTipoCliente;
    private HtmlInputText txtCliIdentificacion;
    private HtmlSelectOneMenu cmbCliTipoCliente;
    private HtmlSelectOneMenu cmbCliEstado;
    private HtmlCommandButton btnCiudad;
    private HtmlCommandButton btnAceptar;
    private HtmlCommandButton btnSave;
    private HtmlCommandButton btnModify;
    private HtmlCommandButton btnDelete;
    private HtmlCommandButton btnClear;
    private HtmlDataTable tablaMunicipio = new HtmlDataTable();
    private boolean renderDataTable;
    private boolean flag = true;
    private boolean btnErrorf = false;
    private boolean btnciudadf = false;
    private RenderManager renderManager;
    private PersistentFacesState state = PersistentFacesState.getInstance();
    private List<RebCliente> rebCliente;
    private List<RebClienteDTO> rebClienteDTO;
    private List<SelectItem> listEstado = new ArrayList<SelectItem>();
    private List<SelectItem> listTipoCli = new ArrayList<SelectItem>();
    private List<RebMunicipio> losMunicipios = new ArrayList<RebMunicipio>();
    private String ciudad;

    public RebClienteView() {
        super("");
    }
    
    public String action_Cargar2() throws Exception {
    	String codigoCiudad = txtCliCodigo.getValue().toString();
    	try {
			RebMunicipio ciud = BusinessDelegatorView.getRebMunicipio(Integer.parseInt(codigoCiudad));
			txtMunCodigo_RebMunicipio.setValue(ciud.getMunNombre());
			ciudad = ciud.getMunCodigo().toString();
			btnciudadf = false;
			
		} catch (NumberFormatException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        return "";
    }
    
    public String action_abrir() {
		btnciudadf = true;
		return "";
	}
    
    public String action_cerrar() {
		btnciudadf = false;
		return "";
	}
    
    public String action_clear() {
        txtCliApellido.setValue(null);
        txtCliApellido.setDisabled(true);
        txtCliContacto1.setValue(null);
        txtCliContacto1.setDisabled(true);
        txtCliContacto2.setValue(null);
        txtCliContacto2.setDisabled(true);
        txtCliDireccion.setValue(null);
        txtCliDireccion.setDisabled(true);
        txtCliEmail.setValue(null);
        txtCliEmail.setDisabled(true);
        cmbCliEstado.setValue("0");
        cmbCliEstado.setDisabled(true);
        txtCliNit.setValue(null);
        txtCliNit.setDisabled(true);
        txtCliNombre.setValue(null);
        txtCliNombre.setDisabled(true);
        txtCliTelefonocontacto1.setValue(null);
        txtCliTelefonocontacto1.setDisabled(true);
        txtCliTelefonocontacto2.setValue(null);
        txtCliTelefonocontacto2.setDisabled(true);
        txtCliTelefonooficina.setValue(null);
        txtCliTelefonooficina.setDisabled(true);
        txtMunCodigo_RebMunicipio.setValue(null);
        txtMunCodigo_RebMunicipio.setDisabled(true);
        cmbCliTipoCliente.setValue("0");
        cmbCliTipoCliente.setDisabled(false);
        txtCliIdentificacion.setValue(null);
        txtCliIdentificacion.setDisabled(true);
        btnCiudad.setDisabled(true);
        btnSave.setDisabled(true);
        btnDelete.setDisabled(true);
        btnModify.setDisabled(true);
        btnClear.setDisabled(false);
        ciudad = null;

        return "";
    }
    
    public String action_consultarCiudad() {
		try {

			String nombreCiudad = txtNombreMunicipio.getValue().toString().toUpperCase();
			if (nombreCiudad == null || nombreCiudad == "") {
				losMunicipios = BusinessDelegatorView.findByCriteriaInRebMunicipio(null,null,null, true);
			} else {
				Object variables[] = {"munNombre",true,nombreCiudad + '%',"Like"};
				losMunicipios = BusinessDelegatorView.findByCriteriaInRebMunicipio(variables, null, null, true);
				System.out.println("Aqui");
			}
			flag = true;
			renderManager.getOnDemandRenderer("rebClienteView")
			.requestRender();

		} catch (Exception e) {
			// TODO: handle exception
		}

		return "";
	}
    
    public void listener_cmbTipoCliente (ValueChangeEvent event){

    	if ((event.getNewValue() != null) && !event.getNewValue().equals("")){
    		RebTipoCliente entity2 = null;
    		try {
    			Integer cliTipoCliente = new Integer(cmbCliTipoCliente.getValue().toString());
    			entity2 = BusinessDelegatorView.getRebTipoCliente(cliTipoCliente);
    		} catch (Exception e) {
    			// TODO: handle exception
    		}

    		if (entity2.getTclCodigo() == 2) {
    			txtCliApellido.setDisabled(false);
    			txtCliContacto1.setDisabled(false);
    			txtCliContacto2.setDisabled(false);
    			txtCliDireccion.setDisabled(false);
    			txtCliEmail.setDisabled(false);
    			cmbCliEstado.setDisabled(false);
    			txtCliNit.setDisabled(false);
    			txtCliNombre.setDisabled(false);
    			txtCliTelefonocontacto1.setDisabled(false);
    			txtCliTelefonocontacto2.setDisabled(false);
    			txtCliTelefonooficina.setDisabled(false);
    			txtMunCodigo_RebMunicipio.setDisabled(false);
    			cmbCliTipoCliente.setDisabled(false);
    			txtCliIdentificacion.setDisabled(false);
    			btnCiudad.setDisabled(false);
    			btnSave.setDisabled(false);
    			btnDelete.setDisabled(true);
    			btnModify.setDisabled(true);
    			btnClear.setDisabled(false);
    		} else {
    			txtCliApellido.setDisabled(true);
    			txtCliContacto1.setDisabled(false);
    			txtCliContacto2.setDisabled(false);
    			txtCliDireccion.setDisabled(false);
    			txtCliEmail.setDisabled(false);
    			cmbCliEstado.setDisabled(false);
    			txtCliNit.setDisabled(false);
    			txtCliNombre.setDisabled(false);
    			txtCliTelefonocontacto1.setDisabled(false);
    			txtCliTelefonocontacto2.setDisabled(false);
    			txtCliTelefonooficina.setDisabled(false);
    			txtMunCodigo_RebMunicipio.setDisabled(false);
    			cmbCliTipoCliente.setDisabled(false);
    			txtCliIdentificacion.setDisabled(false);
    			btnCiudad.setDisabled(false);
    			btnSave.setDisabled(false);
    			btnDelete.setDisabled(true);
    			btnModify.setDisabled(true);
    			btnClear.setDisabled(false);
    		}
    	}
    }

    public void listener_txtId(ValueChangeEvent event) {
        if ((event.getNewValue() != null) && !event.getNewValue().equals("")) {
            RebCliente entity = null;

            try {
            	String cliIdentificacion = txtCliIdentificacion.getValue().toString();
                entity = BusinessDelegatorView.getRebCliente(cliIdentificacion);
            } catch (Exception e) {
                // TODO: handle exception
            }

            if (entity == null) {
                /*txtCliApellido.setDisabled(false);
                txtCliContacto1.setDisabled(false);
                txtCliContacto2.setDisabled(false);
                txtCliDireccion.setDisabled(false);
                txtCliEmail.setDisabled(false);
                cmbCliEstado.setDisabled(false);
                txtCliNit.setDisabled(false);
                txtCliNombre.setDisabled(false);
                txtCliTelefonocontacto1.setDisabled(false);
                txtCliTelefonocontacto2.setDisabled(false);
                txtCliTelefonooficina.setDisabled(false);
                txtMunCodigo_RebMunicipio.setDisabled(false);
                cmbCliTipoCliente.setDisabled(false);
                txtCliIdentificacion.setDisabled(false);
                btnCiudad.setDisabled(false);
                btnSave.setDisabled(false);
                btnDelete.setDisabled(true);
                btnModify.setDisabled(true);
                btnClear.setDisabled(false);*/
            } else {
                txtCliApellido.setValue(entity.getCliApellido());
                txtCliApellido.setDisabled(false);
                txtCliContacto1.setValue(entity.getCliContacto1());
                txtCliContacto1.setDisabled(false);
                txtCliContacto2.setValue(entity.getCliContacto2());
                txtCliContacto2.setDisabled(false);
                txtCliDireccion.setValue(entity.getCliDireccion());
                txtCliDireccion.setDisabled(false);
                txtCliEmail.setValue(entity.getCliEmail());
                txtCliEmail.setDisabled(false);
                cmbCliEstado.setValue(entity.getCliEstado());
                cmbCliEstado.setDisabled(false);
                txtCliNit.setValue(entity.getCliNit());
                txtCliNit.setDisabled(false);
                txtCliNombre.setValue(entity.getCliNombre());
                txtCliNombre.setDisabled(false);
                txtCliTelefonocontacto1.setValue(entity.getCliTelefonocontacto1());
                txtCliTelefonocontacto1.setDisabled(false);
                txtCliTelefonocontacto2.setValue(entity.getCliTelefonocontacto2());
                txtCliTelefonocontacto2.setDisabled(false);
                txtCliTelefonooficina.setValue(entity.getCliTelefonooficina());
                txtCliTelefonooficina.setDisabled(false);
                txtMunCodigo_RebMunicipio.setValue(entity.getRebMunicipio()
                                                         .getMunCodigo());
                ciudad = entity.getRebMunicipio().getMunCodigo().toString();
                txtMunCodigo_RebMunicipio.setDisabled(false);
                cmbCliTipoCliente.setValue(entity.getRebTipoCliente()
                                                           .getTclCodigo());
                cmbCliTipoCliente.setDisabled(true);
                txtCliIdentificacion.setValue(entity.getCliIdentificacion());
                txtCliIdentificacion.setDisabled(true);
                btnCiudad.setDisabled(false);
                btnSave.setDisabled(true);
                btnDelete.setDisabled(false);
                btnModify.setDisabled(false);
                btnClear.setDisabled(false);
            }
        }
    }
    
    public String action_cargar(String cliIdentificacion) {
    	RebCliente entity = null;
        if (cliIdentificacion != null){
            try {
            	String Identificacion =cliIdentificacion.toString();
                entity = BusinessDelegatorView.getRebCliente(Identificacion);
            } catch (Exception e) {
                // TODO: handle exception
            }

            if (entity == null) {
                //txtCliApellido.setDisabled(false);
                txtCliContacto1.setDisabled(false);
                txtCliContacto2.setDisabled(false);
                txtCliDireccion.setDisabled(false);
                txtCliEmail.setDisabled(false);
                cmbCliEstado.setDisabled(false);
                txtCliNit.setDisabled(false);
                txtCliNombre.setDisabled(false);
                txtCliTelefonocontacto1.setDisabled(false);
                txtCliTelefonocontacto2.setDisabled(false);
                txtCliTelefonooficina.setDisabled(false);
                txtMunCodigo_RebMunicipio.setDisabled(false);
                cmbCliTipoCliente.setDisabled(false);
                txtCliIdentificacion.setDisabled(false);
                btnCiudad.setDisabled(false);
                btnSave.setDisabled(false);
                btnDelete.setDisabled(true);
                btnModify.setDisabled(true);
                btnClear.setDisabled(false);
            } else {
            	if (entity.getRebTipoCliente().getTclCodigo() == 1) {
            		//txtCliApellido.setValue(entity.getCliApellido());
                    txtCliApellido.setDisabled(true);
            	}else {
            		txtCliApellido.setValue(entity.getCliApellido());
                    txtCliApellido.setDisabled(false);
            	}
                txtCliContacto1.setValue(entity.getCliContacto1());
                txtCliContacto1.setDisabled(false);
                txtCliContacto2.setValue(entity.getCliContacto2());
                txtCliContacto2.setDisabled(false);
                txtCliDireccion.setValue(entity.getCliDireccion());
                txtCliDireccion.setDisabled(false);
                txtCliEmail.setValue(entity.getCliEmail());
                txtCliEmail.setDisabled(false);
                cmbCliEstado.setValue(entity.getCliEstado());
                cmbCliEstado.setDisabled(false);
                txtCliNit.setValue(entity.getCliNit());
                txtCliNit.setDisabled(false);
                txtCliNombre.setValue(entity.getCliNombre());
                txtCliNombre.setDisabled(false);
                txtCliTelefonocontacto1.setValue(entity.getCliTelefonocontacto1());
                txtCliTelefonocontacto1.setDisabled(false);
                txtCliTelefonocontacto2.setValue(entity.getCliTelefonocontacto2());
                txtCliTelefonocontacto2.setDisabled(false);
                txtCliTelefonooficina.setValue(entity.getCliTelefonooficina());
                txtCliTelefonooficina.setDisabled(false);
                txtMunCodigo_RebMunicipio.setValue(entity.getRebMunicipio()
                                                         .getMunNombre());
                ciudad = entity.getRebMunicipio().getMunCodigo().toString();
                txtMunCodigo_RebMunicipio.setDisabled(false);
                cmbCliTipoCliente.setValue(entity.getRebTipoCliente()
                                                           .getTclCodigo());
                cmbCliTipoCliente.setDisabled(true);
                txtCliIdentificacion.setValue(entity.getCliIdentificacion());
                txtCliIdentificacion.setDisabled(true);
                btnCiudad.setDisabled(false);
                btnSave.setDisabled(true);
                btnDelete.setDisabled(false);
                btnModify.setDisabled(false);
                btnClear.setDisabled(false);
            }
        }
        return "";
    }
    
    public String action_cerrar2(){
		btnErrorf = false;
		return "";
    }

    public String action_save() {
        try {
        	String tipoCliente = cmbCliTipoCliente.getValue().toString();
        	String id = txtCliIdentificacion.getValue().toString();
        	
        	String nit = "";
        	if (tipoCliente.equals("2")) {
        		if (txtCliNit.getValue().equals("")) {
            		nit = "0";
    			}else {
    				nit = txtCliNit.getValue().toString();
    			}
			}else {
				nit = txtCliNit.getValue().toString();
			}
        	
        	String apellido;
        	String municipio = ""; 
        	try {
        		 apellido = txtCliApellido.getValue().toString().toUpperCase();
			} catch (Exception e) {
				 apellido = "";
			}
			if (ciudad != null) {
				municipio = ciudad;
			}
        	String nombre = txtCliNombre.getValue().toString().toUpperCase();
        	String direccion = txtCliDireccion.getValue().toString();
        	String Telefonooficina = txtCliTelefonooficina.getValue().toString();
        	String email = txtCliEmail.getValue().toString();
        	String contacto1 = txtCliContacto1.getValue().toString().toUpperCase();
        	String Telefonocontacto1 = txtCliTelefonocontacto1.getValue().toString();
        	String contacto2 = txtCliContacto2.getValue().toString().toUpperCase();
        	String Telefonocontacto2 = txtCliTelefonocontacto2.getValue().toString();
        	String estado = cmbCliEstado.getValue().toString();
        	
        	
        	if (tipoCliente.trim().equals("") || tipoCliente.equals("0")) {
				throw new Exception("El Tipo Cliente es de car&#225;cter obligatorio, debes seleccionar alguno");
			}
        	if (!Utilities.soloNumeros(id)) {
				throw new Exception("El Numero de identificacion del cliente debe ser totalmente numerico");
			}
			if (id.trim().equals("")) {
				throw new Exception("El Numero de identificacion del cliente es de caracter obligatorio");
			}
			if (tipoCliente.equals("1")) {
				if(nit.trim().equals("")){
					throw new Exception("El nit del Cliente Juridico es de car&#225;cter obligatorio");
				}
			}
			//
			apellido = txtCliApellido.getValue().toString(); 
			if(tipoCliente.equals("2")){
				if(apellido.trim().equals("")){
					throw new Exception("El apellido del Cliente Natural es de car&#225;cter obligatorio");
				}
			}
			//
			if (!Utilities.soloNumeros(nit)) {
				throw new Exception("El Nit del cliente debe ser totalmente numerico");
			}
        	if(!Utilities.soloLetras(apellido)){
				throw new Exception("El Apellido del Cliente debe contener solo letras");
			}
        	if(!Utilities.soloLetras(nombre)){
				throw new Exception("El Nombre del Cliente debe contener solo letras");
			}
        	if(nombre.trim().equals("")){
				throw new Exception("El Nombre del Cliente es de car&#225;cter obligatorio");
			}
        	if(municipio.trim().equals("")){
				throw new Exception("La Ciudad es de car&#225;cter obligatorio, debes seleccionar alguna");
			}
        	if (Telefonooficina.trim().equals("")) {
				throw new Exception("El Tel&#233;fono de la oficina es de caracter obligatorio");
			}
        	if (!Utilities.soloNumeros(Telefonooficina)) {
				throw new Exception("El Tel&#233;fono de la Oficina debe ser totalmente numerico");
			}
        	if(!Utilities.correElectronico(email)&& email.trim() != ""){
				throw new Exception("El E-mail del cliente debe tener el siguiente formato \"xxx@xxx.xxx\"");
			}
        	if(!Utilities.soloLetras(contacto1)){
				throw new Exception("El Contacto1 debe contener solo letras");
			}
        	if(contacto1.trim().equals("")){
				throw new Exception("El Contacto1 es de car&#225;cter obligatorio");
			}
        	if (!Utilities.soloNumeros(Telefonocontacto1)) {
				throw new Exception("El Tel&#233;fono del Contacto1 debe ser totalmente numerico");
			}
			if (Telefonocontacto1.trim().equals("")) {
				throw new Exception("El Tel&#233;fono del Contacto1 es de caracter obligatorio");
			}
			if(!Utilities.soloLetras(contacto2)){
				throw new Exception("El Contacto2 debe contener solo letras");
			}
			if (!Utilities.soloNumeros(Telefonocontacto2)) {
				throw new Exception("El Tel&#233;fono del Contacto2 debe ser totalmente numerico");
			}
        	if (estado.trim().equals("") || estado.equals("Seleccione un valor")) {
				throw new Exception("El Estado del cliente es de car&#225;cter obligatorio, debes seleccionar alguno");
			}
			
            BusinessDelegatorView.saveRebCliente(apellido, contacto1, contacto2,
                direccion, email, estado, id, new Integer(nit),
                nombre, Telefonocontacto1, Telefonocontacto2, Telefonooficina,
                new Integer(municipio), new Integer(tipoCliente));
            btnErrorf = true;
            FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYSAVED);
            
            onePageDataModel = null;
			renderManager.getOnDemandRenderer("rebClienteView").requestRender();
            
            action_clear();
            
        } catch (Exception e) {
        	btnAceptar.requestFocus();
        	btnErrorf = true;
            FacesUtils.addErrorMessage(e.getMessage());
        }

        return "";
    }

    public String action_delete() {
        try {
            BusinessDelegatorView.deleteRebCliente(FacesUtils.checkString(
                    txtCliIdentificacion));
            FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYDELETED);
            action_clear();
        } catch (Exception e) {
            FacesUtils.addErrorMessage(e.getMessage());
        }

        return "";
    }
    
    public String action_inactivar() {
        try {
        	String tipoCliente = cmbCliTipoCliente.getValue().toString();
        	String id = txtCliIdentificacion.getValue().toString();
        	String nit = "";
        	if (tipoCliente.equals("2")) {
        		if (txtCliNit.getValue().equals("")) {
            		nit = "0";
    			}else {
    				nit = txtCliNit.getValue().toString();
    			}
			}else {
				nit = txtCliNit.getValue().toString();
			}
        	String apellido;
        	String municipio; 
        	try {
        		 apellido = txtCliApellido.getValue().toString().toUpperCase();
			} catch (Exception e) {
				 apellido = "";
			}
			try {
       		 	municipio = ciudad;
			} catch (Exception e) {
				 municipio = "";
			}
        	String nombre = txtCliNombre.getValue().toString().toUpperCase();
        	String direccion = txtCliDireccion.getValue().toString();
        	String Telefonooficina = txtCliTelefonooficina.getValue().toString();
        	String email = txtCliEmail.getValue().toString();
        	String contacto1 = txtCliContacto1.getValue().toString().toUpperCase();
        	String Telefonocontacto1 = txtCliTelefonocontacto1.getValue().toString();
        	String contacto2 = txtCliContacto2.getValue().toString().toUpperCase();
        	String Telefonocontacto2 = txtCliTelefonocontacto2.getValue().toString();
//        	String estado = cmbCliEstado.getValue().toString();
        	
        	if (tipoCliente.trim().equals("") || tipoCliente.equals("0")) {
				throw new Exception("El Tipo Cliente es de car&#225;cter obligatorio, debes seleccionar alguno");
			}
        	if (!Utilities.soloNumeros(id)) {
				throw new Exception("El Numero de identificacion del cliente debe ser totalmente numerico");
			}
			if (id.trim().equals("")) {
				throw new Exception("El Numero de identificacion del cliente es de caracter obligatorio");
			}
			if (!Utilities.soloNumeros(nit)) {
				throw new Exception("El Nit del cliente debe ser totalmente numerico");
			}
			if (tipoCliente.equals("1")) {
				if(nit.trim().equals("")){
					throw new Exception("El nit del Cliente Juridico es de car&#225;cter obligatorio");
				}
			}
        	if(!Utilities.soloLetras(apellido)){
				throw new Exception("El Apellido del Cliente debe contener solo letras");
			}
        	if(!Utilities.soloLetras(nombre)){
				throw new Exception("El Nombre del Cliente debe contener solo letras");
			}
        	if(nombre.trim().equals("")){
				throw new Exception("El Nombre del Cliente es de car&#225;cter obligatorio");
			}
        	if(municipio.trim().equals("")){
				throw new Exception("La Ciudad es de car&#225;cter obligatorio, debes seleccionar alguna");
			}
        	if (!Utilities.soloNumeros(Telefonooficina)) {
				throw new Exception("El Tel&#233;fono de la Oficina debe ser totalmente numerico");
			}
        	if(!Utilities.correElectronico(email)&& email.trim() != ""){
				throw new Exception("El E-mail del cliente debe tener el siguiente formato \"xxx@xxx.xxx\"");
			}
        	if(!Utilities.soloLetras(contacto1)){
				throw new Exception("El Contacto1 debe contener solo letras");
			}
        	if(contacto1.trim().equals("")){
				throw new Exception("El Contacto1 es de car&#225;cter obligatorio");
			}
        	if (!Utilities.soloNumeros(Telefonocontacto1)) {
				throw new Exception("El Tel&#233;fono del Contacto1 debe ser totalmente numerico");
			}
			if (Telefonocontacto1.trim().equals("")) {
				throw new Exception("El Tel&#233;fono del Contacto1 es de caracter obligatorio");
			}
			if(!Utilities.soloLetras(contacto2)){
				throw new Exception("El Contacto2 debe contener solo letras");
			}
			if (!Utilities.soloNumeros(Telefonocontacto2)) {
				throw new Exception("El Tel&#233;fono del Contacto2 debe ser totalmente numerico");
			}
        	/*if (estado.trim().equals("") || estado.equals("Seleccione un valor")) {
				throw new Exception("El Estado del cliente es de car&#225;cter obligatorio, debes seleccionar alguno");
			}*/
        	String est = "INACTIVO";
            BusinessDelegatorView.updateRebCliente(apellido, contacto1, contacto2,
                direccion, email, est, id, new Integer(nit), nombre,
                Telefonocontacto1, Telefonocontacto2, Telefonooficina,
                new Integer(municipio), new Integer(tipoCliente));
            btnErrorf = true;
            FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYMODIFIED);
            
            onePageDataModel = null;
			renderManager.getOnDemandRenderer("rebClienteView").requestRender();
            
            action_clear();
        } catch (Exception e) {
        	btnErrorf = true;
        	btnAceptar.requestFocus();
            FacesUtils.addErrorMessage(e.getMessage());
        }

        return "";
    }

    public String action_modify() {
        try {
        	
        	String tipoCliente = cmbCliTipoCliente.getValue().toString();
        	String id = txtCliIdentificacion.getValue().toString();
        	String nit = "";
        	if (tipoCliente.equals("2")) {
        		if (txtCliNit.getValue().equals("")) {
            		nit = "0";
    			}else {
    				nit = txtCliNit.getValue().toString();
    			}
			}else {
				nit = txtCliNit.getValue().toString();
			}
        	String apellido;
        	String municipio = ""; 
        	try {
        		 apellido = txtCliApellido.getValue().toString().toUpperCase();
			} catch (Exception e) {
				 apellido = "";
			}
			if (ciudad != null) {
				municipio = ciudad;
			}
        	String nombre = txtCliNombre.getValue().toString().toUpperCase();
        	String direccion = txtCliDireccion.getValue().toString();
        	String Telefonooficina = txtCliTelefonooficina.getValue().toString();
        	String email = txtCliEmail.getValue().toString();
        	String contacto1 = txtCliContacto1.getValue().toString().toUpperCase();
        	String Telefonocontacto1 = txtCliTelefonocontacto1.getValue().toString();
        	String contacto2 = txtCliContacto2.getValue().toString().toUpperCase();
        	String Telefonocontacto2 = txtCliTelefonocontacto2.getValue().toString();
        	String estado = cmbCliEstado.getValue().toString();
        	
        	if (tipoCliente.trim().equals("") || tipoCliente.equals("0")) {
				throw new Exception("El Tipo Cliente es de car&#225;cter obligatorio, debes seleccionar alguno");
			}
        	if (!Utilities.soloNumeros(id)) {
				throw new Exception("El Numero de identificacion del cliente debe ser totalmente numerico");
			}
			if (id.trim().equals("")) {
				throw new Exception("El Numero de identificacion del cliente es de caracter obligatorio");
			}
			if (!Utilities.soloNumeros(nit)) {
				throw new Exception("El Nit del cliente debe ser totalmente numerico");
			}
			if (tipoCliente.equals("1")) {
				if(nit.trim().equals("")){
					throw new Exception("El nit del Cliente Juridico es de car&#225;cter obligatorio");
				}
			}
        	if(!Utilities.soloLetras(apellido)){
				throw new Exception("El Apellido del Cliente debe contener solo letras");
			}
        	if(!Utilities.soloLetras(nombre)){
				throw new Exception("El Nombre del Cliente debe contener solo letras");
			}
        	if(nombre.trim().equals("")){
				throw new Exception("El Nombre del Cliente es de car&#225;cter obligatorio");
			}
        	if(municipio.trim().equals("")){
				throw new Exception("La Ciudad es de car&#225;cter obligatorio, debes seleccionar alguna");
			}
        	if (!Utilities.soloNumeros(Telefonooficina)) {
				throw new Exception("El Tel&#233;fono de la Oficina debe ser totalmente numerico");
			}
        	if(!Utilities.correElectronico(email)&& email.trim() != ""){
				throw new Exception("El E-mail del cliente debe tener el siguiente formato \"xxx@xxx.xxx\"");
			}
        	if(!Utilities.soloLetras(contacto1)){
				throw new Exception("El Contacto1 debe contener solo letras");
			}
        	if(contacto1.trim().equals("")){
				throw new Exception("El Contacto1 es de car&#225;cter obligatorio");
			}
        	if (!Utilities.soloNumeros(Telefonocontacto1)) {
				throw new Exception("El Tel&#233;fono del Contacto1 debe ser totalmente numerico");
			}
			if (Telefonocontacto1.trim().equals("")) {
				throw new Exception("El Tel&#233;fono del Contacto1 es de caracter obligatorio");
			}
			if(!Utilities.soloLetras(contacto2)){
				throw new Exception("El Contacto2 debe contener solo letras");
			}
			if (!Utilities.soloNumeros(Telefonocontacto2)) {
				throw new Exception("El Tel&#233;fono del Contacto2 debe ser totalmente numerico");
			}
        	if (estado.trim().equals("") || estado.equals("Seleccione un valor")) {
				throw new Exception("El Estado del cliente es de car&#225;cter obligatorio, debes seleccionar alguno");
			}
        	
            BusinessDelegatorView.updateRebCliente(apellido, contacto1, contacto2, direccion,
                email, estado, id, new Integer(nit), nombre, Telefonocontacto1,
                Telefonocontacto2, Telefonooficina, new Integer(municipio),
                new Integer(tipoCliente));
            btnErrorf = true;
            FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYMODIFIED);
            
            onePageDataModel = null;
			renderManager.getOnDemandRenderer("rebClienteView").requestRender();
            
            action_clear();
        } catch (Exception e) {
        	btnErrorf = true;
        	btnAceptar.requestFocus();
            FacesUtils.addErrorMessage(e.getMessage());
        }

        return "";
    }

    public String action_modifyWitDTO(String cliApellido, String cliContacto1,
        String cliContacto2, String cliDireccion, String cliEmail,
        String cliEstado, String cliIdentificacion, Integer cliNit,
        String cliNombre, String cliTelefonocontacto1,
        String cliTelefonocontacto2, String cliTelefonooficina,
        Integer munCodigo_RebMunicipio, Integer tclCodigo_RebTipoCliente)
        throws Exception {
        try {
            BusinessDelegatorView.updateRebCliente(cliApellido, cliContacto1,
                cliContacto2, cliDireccion, cliEmail, cliEstado,
                cliIdentificacion, cliNit, cliNombre, cliTelefonocontacto1,
                cliTelefonocontacto2, cliTelefonooficina,
                munCodigo_RebMunicipio, tclCodigo_RebTipoCliente);
            renderManager.getOnDemandRenderer("RebClienteView").requestRender();
            FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYMODIFIED);
        } catch (Exception e) {
            //renderManager.getOnDemandRenderer("RebClienteView").requestRender();
            FacesUtils.addErrorMessage(e.getMessage());
            throw e;
        }

        return "";
    }

    public List<RebCliente> getRebCliente() {
        if (flag) {
            try {
                rebCliente = BusinessDelegatorView.getRebCliente();
                flag = false;
            } catch (Exception e) {
                flag = true;
                FacesUtils.addErrorMessage(e.getMessage());
            }
        }

        return rebCliente;
    }

    public HtmlOutputText getTxtCliCodigo() {
		return txtCliCodigo;
	}

	public void setTxtCliCodigo(HtmlOutputText txtCliCodigo) {
		this.txtCliCodigo = txtCliCodigo;
	}

	public boolean isFlag() {
        return flag;
    }

    public void setRebCliente(List<RebCliente> rebCliente) {
        this.rebCliente = rebCliente;
    }

    public boolean isRenderDataTable() {
        try {
            if (flag) {
                if (BusinessDelegatorView.findTotalNumberRebCliente() > 0) {
                    renderDataTable = true;
                } else {
                    renderDataTable = false;
                }
            }

            flag = false;
        } catch (Exception e) {
            renderDataTable = false;
            e.printStackTrace();
        }

        return renderDataTable;
    }

    public DataModel getData() {
        state = PersistentFacesState.getInstance();

        if (onePageDataModel == null) {
            onePageDataModel = new LocalDataModel(pageSize);
        }

        return onePageDataModel;
    }

    /**
    * This is where the Object data is retrieved from the database and
    * returned as a list of objects for display in the UI.
    */
    private DataPage<RebCliente> getDataPage(int startRow, int pageSize) {
        // Retrieve the total number of objects from the database.  This
        // number is required by the DataPage object so the paginator will know
        // the relative location of the page data.
        int totalNumberRebCliente = 0;

        try {
            totalNumberRebCliente = BusinessDelegatorView.findTotalNumberRebCliente()
                                                         .intValue();
        } catch (Exception e) {
            FacesUtils.addErrorMessage(e.getMessage());
        }

        // Calculate indices to be displayed in the ui.
        int endIndex = startRow + pageSize;

        if (endIndex > totalNumberRebCliente) {
            endIndex = totalNumberRebCliente;
        }

        try {
            rebCliente = BusinessDelegatorView.findPageRebCliente(sortColumnName,
                    sortAscending, startRow, endIndex - startRow);

            // Remove this Renderable from the existing render groups.
            //leaveRenderGroups();        			
        } catch (Exception e) {
            FacesUtils.addErrorMessage(e.getMessage());
        }

        // Add this Renderable to the new render groups.
        //joinRenderGroups();
        // Reset the dirtyData flag.
        onePageDataModel.setDirtyData(false);
        // This is required when using Hibernate.  If the SessionManager is not
        // cleared or closed objects are cached and stale objects will show up
        // in the table.
        // This way, the detached objects are reread from the database.
        // This call is not required with Hibernate, which uses a Query Hint
        // to clear the l2 cache in the DAO.
        flag = true;

        return new DataPage<RebCliente>(totalNumberRebCliente, startRow,
            rebCliente);
    }

    public DataModel getDataDTO() {
        state = PersistentFacesState.getInstance();

        if (onePageDataModel == null) {
            onePageDataModel = new LocalDataModelDTO(pageSize);
        }

        return onePageDataModel;
    }

    /**
    * This is where the Object data is retrieved from the database and
    * returned as a list of objects for display in the UI.
    */
    private DataPage<RebClienteDTO> getDataPageDTO(int startRow, int pageSize) {
        // Retrieve the total number of objects from the database.  This
        // number is required by the DataPage object so the paginator will know
        // the relative location of the page data.
        int totalNumberRebCliente = 0;

        try {
            totalNumberRebCliente = BusinessDelegatorView.findTotalNumberRebCliente()
                                                         .intValue();
        } catch (Exception e) {
            FacesUtils.addErrorMessage(e.getMessage());
        }

        // Calculate indices to be displayed in the ui.
        int endIndex = startRow + pageSize;

        if (endIndex > totalNumberRebCliente) {
            endIndex = totalNumberRebCliente;
        }

        try {
            rebCliente = BusinessDelegatorView.findPageRebCliente(sortColumnName,
                    sortAscending, startRow, endIndex - startRow);

            if (Utilities.validationsList(rebCliente)) {
                rebClienteDTO = new ArrayList<RebClienteDTO>();

                for (RebCliente rebClienteTmp : rebCliente) {
                    RebClienteDTO rebClienteDTO2 = new RebClienteDTO();
                    rebClienteDTO2.setCliIdentificacion(rebClienteTmp.getCliIdentificacion()
                                                                     .toString());
                    rebClienteDTO2.setCliApellido((rebClienteTmp.getCliApellido() != null)
                        ? rebClienteTmp.getCliApellido().toString() : null);
                    rebClienteDTO2.setCliContacto1((rebClienteTmp.getCliContacto1() != null)
                        ? rebClienteTmp.getCliContacto1().toString() : null);
                    rebClienteDTO2.setCliContacto2((rebClienteTmp.getCliContacto2() != null)
                        ? rebClienteTmp.getCliContacto2().toString() : null);
                    rebClienteDTO2.setCliDireccion((rebClienteTmp.getCliDireccion() != null)
                        ? rebClienteTmp.getCliDireccion().toString() : null);
                    rebClienteDTO2.setCliEmail((rebClienteTmp.getCliEmail() != null)
                        ? rebClienteTmp.getCliEmail().toString() : null);
                    rebClienteDTO2.setCliEstado((rebClienteTmp.getCliEstado() != null)
                        ? rebClienteTmp.getCliEstado().toString() : null);
                    rebClienteDTO2.setCliNit((rebClienteTmp.getCliNit() != null)
                        ? rebClienteTmp.getCliNit().toString() : null);
                    rebClienteDTO2.setCliNombre((rebClienteTmp.getCliNombre() != null)
                        ? rebClienteTmp.getCliNombre().toString() : null);
                    rebClienteDTO2.setCliTelefonocontacto1((rebClienteTmp.getCliTelefonocontacto1() != null)
                        ? rebClienteTmp.getCliTelefonocontacto1().toString()
                        : null);
                    rebClienteDTO2.setCliTelefonocontacto2((rebClienteTmp.getCliTelefonocontacto2() != null)
                        ? rebClienteTmp.getCliTelefonocontacto2().toString()
                        : null);
                    rebClienteDTO2.setCliTelefonooficina((rebClienteTmp.getCliTelefonooficina() != null)
                        ? rebClienteTmp.getCliTelefonooficina().toString() : null);
                    rebClienteDTO2.setMunCodigo_RebMunicipio((rebClienteTmp.getRebMunicipio()
                                                                           .getMunNombre() != null)
                        ? rebClienteTmp.getRebMunicipio().getMunNombre()
                                       .toString() : null);
                    rebClienteDTO2.setTclCodigo_RebTipoCliente((rebClienteTmp.getRebTipoCliente()
                                                                             .getTclNombre() != null)
                        ? rebClienteTmp.getRebTipoCliente().getTclNombre()
                                       .toString() : null);
                    rebClienteDTO2.setRebCliente(rebClienteTmp);
                    rebClienteDTO2.setRebClienteView(this);
                    rebClienteDTO.add(rebClienteDTO2);
                }
            }

            // Remove this Renderable from the existing render groups.
            leaveRenderGroups();
        } catch (Exception e) {
            FacesUtils.addErrorMessage(e.getMessage());
        }

        // Add this Renderable to the new render groups.
        joinRenderGroups();
        // Reset the dirtyData flag.
        onePageDataModel.setDirtyData(false);
        // This is required when using Hibernate.  If the SessionManager is not
        // cleared or closed objects are cached and stale objects will show up
        // in the table.
        // This way, the detached objects are reread from the database.
        // This call is not required with Hibernate, which uses a Query Hint
        // to clear the l2 cache in the DAO.
        flag = true;

        return new DataPage<RebClienteDTO>(totalNumberRebCliente, startRow,
            rebClienteDTO);
    }

    protected boolean isDefaultAscending(String sortColumn) {
        return true;
    }

    /**
    * This method is called when a render call is made from the server. Render
    * calls are only made to views containing an updated record. The data is
    * marked as dirty to trigger a fetch of the updated record from the
    * database before rendering takes place.
    */
    public PersistentFacesState getState() {
        onePageDataModel.setDirtyData();

        return state;
    }

    /**
    * This method is called from faces-config.xml with each new session.
    */
    public void setRenderManager(RenderManager renderManager) {
        this.renderManager = renderManager;
    }

    public void renderingException(RenderingException arg0) {
        if (arg0 instanceof TransientRenderingException) {
        } else if (arg0 instanceof FatalRenderingException) {
            // Remove from existing Customer render groups.
            leaveRenderGroups();
        }
    }

    /**
    * Remove this Renderable from existing uiCustomerBeans render groups.
    * OnDemandRenderers are named/created using the underlying Customer Number.
    */
    private void leaveRenderGroups() {
        if (Utilities.validationsList(rebClienteDTO)) {
            for (RebClienteDTO rebClienteTmp : rebClienteDTO) {
                renderManager.getOnDemandRenderer("RebClienteView").remove(this);
            }
        }
    }

    /**
    * Add this Renderable to the new uiCustomerBeans render groups.
    * OnDemandRenderers are named/created using the underlying Customer Number.
    */
    private void joinRenderGroups() {
        if (Utilities.validationsList(rebClienteDTO)) {
            for (RebClienteDTO rebClienteTmp : rebClienteDTO) {
                renderManager.getOnDemandRenderer("RebClienteView").add(this);
            }
        }
    }

    public void dispose() throws Exception {
    }

    public RenderManager getRenderManager() {
        return renderManager;
    }

    public void setState(PersistentFacesState state) {
        this.state = state;
    }

    public HtmlInputText getTxtCliApellido() {
        return txtCliApellido;
    }

    public void setTxtCliApellido(HtmlInputText txtCliApellido) {
        this.txtCliApellido = txtCliApellido;
    }

    public HtmlInputText getTxtCliContacto1() {
        return txtCliContacto1;
    }

    public void setTxtCliContacto1(HtmlInputText txtCliContacto1) {
        this.txtCliContacto1 = txtCliContacto1;
    }

    public HtmlInputText getTxtCliContacto2() {
        return txtCliContacto2;
    }

    public void setTxtCliContacto2(HtmlInputText txtCliContacto2) {
        this.txtCliContacto2 = txtCliContacto2;
    }

    public HtmlInputText getTxtCliDireccion() {
        return txtCliDireccion;
    }

    public void setTxtCliDireccion(HtmlInputText txtCliDireccion) {
        this.txtCliDireccion = txtCliDireccion;
    }

    public HtmlInputText getTxtCliEmail() {
        return txtCliEmail;
    }

    public void setTxtCliEmail(HtmlInputText txtCliEmail) {
        this.txtCliEmail = txtCliEmail;
    }

    public HtmlInputText getTxtCliEstado() {
        return txtCliEstado;
    }

    public void setTxtCliEstado(HtmlInputText txtCliEstado) {
        this.txtCliEstado = txtCliEstado;
    }

    public HtmlInputText getTxtCliNit() {
        return txtCliNit;
    }

    public void setTxtCliNit(HtmlInputText txtCliNit) {
        this.txtCliNit = txtCliNit;
    }

    public HtmlInputText getTxtCliNombre() {
        return txtCliNombre;
    }

    public void setTxtCliNombre(HtmlInputText txtCliNombre) {
        this.txtCliNombre = txtCliNombre;
    }

    public HtmlInputText getTxtCliTelefonocontacto1() {
        return txtCliTelefonocontacto1;
    }

    public void setTxtCliTelefonocontacto1(
        HtmlInputText txtCliTelefonocontacto1) {
        this.txtCliTelefonocontacto1 = txtCliTelefonocontacto1;
    }

    public HtmlInputText getTxtCliTelefonocontacto2() {
        return txtCliTelefonocontacto2;
    }

    public void setTxtCliTelefonocontacto2(
        HtmlInputText txtCliTelefonocontacto2) {
        this.txtCliTelefonocontacto2 = txtCliTelefonocontacto2;
    }

    public HtmlInputText getTxtCliTelefonooficina() {
        return txtCliTelefonooficina;
    }

    public void setTxtCliTelefonooficina(HtmlInputText txtCliTelefonooficina) {
        this.txtCliTelefonooficina = txtCliTelefonooficina;
    }

    public HtmlInputText getTxtMunCodigo_RebMunicipio() {
        return txtMunCodigo_RebMunicipio;
    }

    public void setTxtMunCodigo_RebMunicipio(
        HtmlInputText txtMunCodigo_RebMunicipio) {
        this.txtMunCodigo_RebMunicipio = txtMunCodigo_RebMunicipio;
    }

    public HtmlInputText getTxtTclCodigo_RebTipoCliente() {
        return txtTclCodigo_RebTipoCliente;
    }

    public void setTxtTclCodigo_RebTipoCliente(
        HtmlInputText txtTclCodigo_RebTipoCliente) {
        this.txtTclCodigo_RebTipoCliente = txtTclCodigo_RebTipoCliente;
    }

    public HtmlInputText getTxtCliIdentificacion() {
        return txtCliIdentificacion;
    }

    public void setTxtCliIdentificacion(HtmlInputText txtCliIdentificacion) {
        this.txtCliIdentificacion = txtCliIdentificacion;
    }

    public HtmlSelectOneMenu getCmbCliTipoCliente() {
    	try {
    		List<RebTipoCliente> list = BusinessDelegatorView.findByCriteriaInRebTipoCliente(null, null, null,true);
    		listTipoCli.clear();
    		listTipoCli.add(new SelectItem(0,"Seleccione un valor"));
    		
    		for (RebTipoCliente tipoCliente : list) {
    			listTipoCli.add(new SelectItem(tipoCliente.getTclCodigo(), tipoCliente.getTclNombre()));
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
		return cmbCliTipoCliente;
	}

	public void setCmbCliTipoCliente(HtmlSelectOneMenu cmbCliTipoCliente) {
		this.cmbCliTipoCliente = cmbCliTipoCliente;
	}

	public HtmlSelectOneMenu getCmbCliEstado() {
		try {
			 listEstado.clear();
			 listEstado.add(new SelectItem("Seleccione un valor"));
			 listEstado.add(new SelectItem("ACTIVO"));
			 listEstado.add(new SelectItem("INACTIVO"));
		 } catch (Exception e) {
			 // TODO: handle exception
		 }
		return cmbCliEstado;
	}

	public void setCmbCliEstado(HtmlSelectOneMenu cmbCliEstado) {
		this.cmbCliEstado = cmbCliEstado;
	}

	public HtmlCommandButton getBtnCiudad() {
		return btnCiudad;
	}

	public void setBtnCiudad(HtmlCommandButton btnCiudad) {
		this.btnCiudad = btnCiudad;
	}

	public HtmlCommandButton getBtnSave() {
        return btnSave;
    }

    public void setBtnSave(HtmlCommandButton btnSave) {
        this.btnSave = btnSave;
    }

    public HtmlCommandButton getBtnModify() {
        return btnModify;
    }

    public void setBtnModify(HtmlCommandButton btnModify) {
        this.btnModify = btnModify;
    }

    public HtmlCommandButton getBtnDelete() {
        return btnDelete;
    }

    public void setBtnDelete(HtmlCommandButton btnDelete) {
        this.btnDelete = btnDelete;
    }

    public HtmlCommandButton getBtnClear() {
        return btnClear;
    }

    public void setBtnClear(HtmlCommandButton btnClear) {
        this.btnClear = btnClear;
    }

    public List<SelectItem> getListEstado() {
		return listEstado;
	}

	public void setListEstado(List<SelectItem> listEstado) {
		this.listEstado = listEstado;
	}

	public List<SelectItem> getListTipoCli() {
		return listTipoCli;
	}

	public void setListTipoCli(List<SelectItem> listTipoCli) {
		this.listTipoCli = listTipoCli;
	}

	public void setRenderDataTable(boolean renderDataTable) {
        this.renderDataTable = renderDataTable;
    }

    public void setFlag(boolean flag) {
        this.flag = flag;
    }
    
    

    public boolean isBtnErrorf() {
		return btnErrorf;
	}

	public void setBtnErrorf(boolean btnErrorf) {
		this.btnErrorf = btnErrorf;
	}

	public List<RebClienteDTO> getRebClienteDTO() {
        return rebClienteDTO;
    }

    public void setRebClienteDTO(List<RebClienteDTO> rebClienteDTO) {
        this.rebClienteDTO = rebClienteDTO;
    }

    public boolean isBtnciudadf() {
		return btnciudadf;
	}

	public void setBtnciudadf(boolean btnciudadf) {
		this.btnciudadf = btnciudadf;
	}

	public HtmlInputText getTxtNombreMunicipio() {
		return txtNombreMunicipio;
	}

	public void setTxtNombreMunicipio(HtmlInputText txtNombreMunicipio) {
		this.txtNombreMunicipio = txtNombreMunicipio;
	}

	public List<RebMunicipio> getLosMunicipios() {
		return losMunicipios;
	}

	public void setLosMunicipios(List<RebMunicipio> losMunicipios) {
		this.losMunicipios = losMunicipios;
	}

	public HtmlDataTable getTablaMunicipio() {
		return tablaMunicipio;
	}

	public void setTablaMunicipio(HtmlDataTable tablaMunicipio) {
		this.tablaMunicipio = tablaMunicipio;
	}

	public HtmlCommandButton getBtnAceptar() {
		return btnAceptar;
	}

	public void setBtnAceptar(HtmlCommandButton btnAceptar) {
		this.btnAceptar = btnAceptar;
	}

	public TimeZone getTimeZone() {
        return java.util.TimeZone.getDefault();
    }

    /**
    * A special type of JSF DataModel to allow a datatable and datapaginator
    * to page through a large set of data without having to hold the entire
    * set of data in memory at once.
    * Any time a managed bean wants to avoid holding an entire dataset,
    * the managed bean declares this inner class which extends PagedListDataModel
    * and implements the fetchData method. fetchData is called
    * as needed when the table requires data that isn't available in the
    * current data page held by this object.
    * This requires the managed bean (and in general the business
    * method that the managed bean uses) to provide the data wrapped in
    * a DataPage object that provides info on the full size of the dataset.
    */
    private class LocalDataModel extends PagedListDataModel {
        public LocalDataModel(int pageSize) {
            super(pageSize);
        }

        public DataPage<RebCliente> fetchPage(int startRow, int pageSize) {
            // call enclosing managed bean method to fetch the data
            return getDataPage(startRow, pageSize);
        }
    }

    private class LocalDataModelDTO extends PagedListDataModel {
        public LocalDataModelDTO(int pageSize) {
            super(pageSize);
        }

        public DataPage<RebClienteDTO> fetchPage(int startRow, int pageSize) {
            // call enclosing managed bean method to fetch the data
            return getDataPageDTO(startRow, pageSize);
        }
    }
}
